// @ts-nocheck
export default {
    data: {
        verificationState: '', // 滑块验证状态
        choiceText: '', // 选择的文字
        choiceImgList: [], // 展示的图片列表
        isChoiceList: [] // 是否选中列表，因用$set改变choiceImgList的值页面无法渲染，才定义此数组
    },
    props: {
        imgList: {// 验证主图地址列表
            default: [],
            type: Array
        },
        itemImgWidth: {// 验证图片的宽
            default: 100,
            type: Number
        },
        showImgNum: {// 验证图片的个数
            default: 9,
            type: Number
        },
        verificationValue: {// 验证图片类型
            default: '',
            type: Number
        },
        tolerance: {// 容差
            default: 0,
            type: Number
        }
    },
    onInit(){
        this.updataVerification(); // 更新验证数据
    },
//   更新验证数据
    updataVerification() {
        this.initData();
        let imgList = this.imgList;
//        将传递过来的img图片随机打乱
        imgList.sort(() => {
            return Math.random()
        })
//        截取图片
        imgList = imgList.slice(0, this.showImgNum > imgList.length ? imgList.length : this.showImgNum);
        let choiceTextList = [];
        imgList.forEach(item => {
//            选择数组填充
            this.isChoiceList.push(false);
            choiceTextList = [...choiceTextList, ...item.type]
        })
//        随机验证文字
        this.choiceText = this.verificationValue !== '' ? this.verificationValue : choiceTextList[this._randomNum(0, choiceTextList.length)];
//        验证图片数据
        this.choiceImgList = imgList;
    },
//    初始化数据
    initData() {
        this.isChoiceList = [];
        this.verificationState = '';
    },
//    图片点击事件
    selectImg(index) {
        this.$set(`isChoiceList.${index}`, !this.isChoiceList[index])
    },
//    验证方法
    verification() {
        console.log('aaa')
        let errorNum = 0;
        let allSuccessNum = 0;
        let choiceNum = 0;
        this.isChoiceList.forEach((item, index) => {
            if (this.choiceImgList[index].type.includes(this.choiceText)) {
                allSuccessNum ++;
            }
            if (item === true) {
                choiceNum ++;
                if (!this.choiceImgList[index].type.includes(this.choiceText)) {
                    errorNum++;
                }
            }

        })
        console.log(this.tolerance + '、' + errorNum + '、' + allSuccessNum + '、' + choiceNum + '、' + ((errorNum - 1) < this.tolerance) + '、' + (Math.abs(choiceNum - allSuccessNum) - 1 < this.tolerance) + '、' )
        if (errorNum - 1 < this.tolerance && Math.abs(choiceNum - allSuccessNum) - 1 <  this.tolerance) {
            this.verificationState = 'success';
            this.$emit('verificationSuccess');
        } else {
            this.verificationState = 'error';
            this.$emit('verificationError');
        }
    },
//    生成一个随机数
    _randomNum(min, max) {
        return Math.floor(Math.random() * (max - min) + min)
    }
}
